package com.wilmer.classTests.service.impl;

import java.util.List;

import com.wilmer.classTestDetails.domain.YwClassTestsDetails;
import com.wilmer.classTestDetails.service.IYwClassTestsDetailsService;
import com.wilmer.common.utils.DateUtils;
import com.wilmer.common.utils.SecurityUtils;
import com.wilmer.testRecordDetails.domain.YwTestRecordsDetails;
import com.wilmer.testRecordDetails.service.IYwTestRecordsDetailsService;
import com.wilmer.testRecords.domain.YwTestRecords;
import com.wilmer.testRecords.service.IYwTestRecordsService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.wilmer.classTests.mapper.YwClassTestsMapper;
import com.wilmer.classTests.domain.YwClassTests;
import com.wilmer.classTests.service.IYwClassTestsService;

/**
 * 随堂测试管理Service业务层处理
 *
 * @author zl
 * @date 2024-04-10
 */
@Service
public class YwClassTestsServiceImpl implements IYwClassTestsService {
    @Autowired
    private YwClassTestsMapper ywClassTestsMapper;
    @Autowired
    private IYwTestRecordsDetailsService ywTestRecordsDetailsService;
    @Autowired
    private IYwTestRecordsService ywTestRecordsService;
    @Autowired
    private IYwClassTestsDetailsService ywClassTestsDetailsService;
    /**
     * 查询随堂测试管理
     *
     * @param testId 随堂测试管理主键
     * @return 随堂测试管理
     */
    @Override
    public YwClassTests selectYwClassTestsByTestId(Long testId) {
        return ywClassTestsMapper.selectYwClassTestsByTestId(testId);
    }

    /**
     * 查询随堂测试管理列表
     *
     * @param ywClassTests 随堂测试管理
     * @return 随堂测试管理
     */
    @Override
    public List<YwClassTests> selectYwClassTestsList(YwClassTests ywClassTests) {
        return ywClassTestsMapper.selectYwClassTestsList(ywClassTests);
    }

    @Override
    public Integer startTest(Long testId,Long courseId) {
        //这个课程下的学生id
        List<Long> longs = ywClassTestsMapper.selectYwClasUserList(courseId);
        //发起的随堂测试下的题
        List<YwClassTestsDetails> ywClassTestsDetails = ywClassTestsDetailsService.selectYwClassTestsDetailsListByTestId(testId);
       if (ywClassTestsDetails.isEmpty()){
           return 2;
       }
        for (int i = 0; i <longs.size(); i++) {
            //添加记录主表
            YwTestRecords ywTestRecords = new YwTestRecords();
            ywTestRecords.setTestId(testId);
            ywTestRecords.setStudentId(longs.get(i));
            ywTestRecordsService.insertYwTestRecords(ywTestRecords);
            //添加测试记录题子表
            for (int j = 0; j < ywClassTestsDetails.size(); j++) {
                YwTestRecordsDetails ywTestRecordsDetails = new YwTestRecordsDetails();
                ywTestRecordsDetails.setRecordId(ywTestRecords.getRecordId());
                ywTestRecordsDetails.setTestDetailId(ywClassTestsDetails.get(j).getTestDetailId());
                ywTestRecordsDetailsService.insertYwTestRecordsDetails(ywTestRecordsDetails);
            }
        }
        return 1;
    }

    /**
     * 新增随堂测试管理
     *
     * @param ywClassTests 随堂测试管理
     * @return 结果
     */
    @Override
    public int insertYwClassTests(YwClassTests ywClassTests) {
        ywClassTests.setCreateTime(DateUtils.getNowDate());
        ywClassTests.setCreatorTeacherId(SecurityUtils.getUserId());
        return ywClassTestsMapper.insertYwClassTests(ywClassTests);
    }

    /**
     * 修改随堂测试管理
     *
     * @param ywClassTests 随堂测试管理
     * @return 结果
     */
    @Override
    public int updateYwClassTests(YwClassTests ywClassTests) {
        ywClassTests.setUpdateTime(DateUtils.getNowDate());
        return ywClassTestsMapper.updateYwClassTests(ywClassTests);
    }

    /**
     * 批量删除随堂测试管理
     *
     * @param testIds 需要删除的随堂测试管理主键
     * @return 结果
     */
    @Override
    public int deleteYwClassTestsByTestIds(Long[] testIds) {
        return ywClassTestsMapper.deleteYwClassTestsByTestIds(testIds);
    }

    /**
     * 删除随堂测试管理信息
     *
     * @param testId 随堂测试管理主键
     * @return 结果
     */
    @Override
    public int deleteYwClassTestsByTestId(Long testId) {
        return ywClassTestsMapper.deleteYwClassTestsByTestId(testId);
    }
}
